package com.ruoyi.flow.service;

import java.io.InputStream;
import java.math.BigDecimal;
import java.util.List;

import com.ruoyi.audit.enums.BpmnTypeEnum;
import com.ruoyi.flow.domain.BusBpmnInfo;
import com.ruoyi.flow.domain.vo.BusBpmnInfoVo;

/**
 * 流程定义Service接口
 * 
 * @author ruoyi
 * @date 2023-10-26
 */
public interface IBusBpmnInfoService 
{
    /**
     * 查询流程定义
     * 
     * @param id 流程定义主键
     * @return 流程定义
     */
    public BusBpmnInfo selectBusBpmnInfoById(Long id);

    /**
     * 查询流程定义列表
     * 
     * @param busBpmnInfo 流程定义
     * @return 流程定义集合
     */
    public List<BusBpmnInfo> selectBusBpmnInfoList(BusBpmnInfo busBpmnInfo);

    /**
     * 新增流程定义
     * 
     * @param busBpmnInfo 流程定义
     * @return 结果
     */
    public int insertBusBpmnInfo(BusBpmnInfo busBpmnInfo);

    /**
     * 修改流程定义
     * 
     * @param busBpmnInfo 流程定义
     * @return 结果
     */
    public int updateBusBpmnInfo(BusBpmnInfo busBpmnInfo);

    /**
     * 批量删除流程定义
     * 
     * @param ids 需要删除的流程定义主键集合
     * @return 结果
     */
    public int deleteBusBpmnInfoByIds(Long[] ids);

    /**
     * 删除流程定义信息
     * 
     * @param id 流程定义主键
     * @return 结果
     */
    public int deleteBusBpmnInfoById(Long id);

    /**
     * 新增流程定义部署
     * @param busBpmnInfoVo
     */
    void deployByBpmnInfo(BusBpmnInfoVo busBpmnInfoVo);

    /**
     * 获取流程文件输入流
     * @param id
     * @param type
     * @return
     */
    InputStream selectBpmnInfoFile(Long id, String type);

    /**
     * 获取流程定义折扣价
     * @return
     */
    BigDecimal getCarPackageAuditDiscountPrice();

    /**
     * 查询最新的BpmnInfo
     * @param type
     * @return
     */
    BusBpmnInfo selectLastestInfoByType(int type);
}
